package main

import (
	"fmt"
	"math/big"
)

func main(){
	// 类型转换
	//var v1 int8 = 1
	//var v2 int16 = 2
	//var v3 = int16(v1)+v2
	//fmt.Println(v3)

	// 高位转低位
	//var v4 int8 = 127
	//v5 := int16(v4)
	//fmt.Println(v5)

	// 整形和字符串的转换
	// strconv.Itoa() 整数转为字符串
	//v6 := 19
	//result := strconv.Itoa(v6)
	//fmt.Println(result,reflect.TypeOf(result))

	//var v7 int8 = 123
	//result2 := strconv.Itoa(int(v7))
	//fmt.Println(result2,reflect.TypeOf(result2))

	// strconv.Atoi() 字符串转为数字
    //v8 := "000i"
	//result3,err3 := strconv.Atoi(v8)
	//fmt.Println(result3,reflect.TypeOf(result3))
	//fmt.Println(err3,reflect.TypeOf(err3))

	//// 进制转换
	//v1 := 1010
	//// 整形转换为二进制
	//r1 := strconv.FormatInt(int64(v1),2) // 转为2进制 1010--->1111110010
	//r2 := strconv.FormatInt(int64(v1),8) // 转为8进制 1010--->1762
	//r3 := strconv.FormatInt(int64(v1),16) // 转为16进制 1010--->3f2
	//fmt.Println(r1)
	//fmt.Println(r2)
	//fmt.Println(r3)

	// 字符串转换
	////data:要转换的文本
	////2:   将字符串按照2进制处理转换为10进制
	////16:   转换过程中的约束不能超过int16的范围
	//data := "10101"
	//result,err := strconv.ParseInt(data,10,16) //将字符串按照2进制处理		按照int16的范围去转化
	//fmt.Println(result,err)

	//14转为16进制
	//v1 := strconv.FormatInt(14,16)
	//fmt.Println(v1)
	////strconv.Itoa()

	////超大整形
	////创建一个超大整形
	//var v1 big.Int
	////var v2 *big.Int	//一般用不到(直接赋值的时候用)
	//v3:=new(big.Int)
	//
	////第二步 在超大整形中写入值
	//v1.SetInt64(1990)
	//v1.SetString("92358203984",10) //将字符串已10进制写在v1
	//fmt.Println(v1)
	//v3.SetInt64(1990)
	//v3.SetString("92358203984",10) //将字符串已10进制写在v1中
	//fmt.Println(v3)

	//v1 := new(big.Int)
	//v1.SetInt64(89)
	//v2 := new(big.Int)
	//v2.SetInt64(89)
	//v1 := big.NewInt(69)
	//v2 := big.NewInt(89)
	//res := new(big.Int)
	//res.Add(v1,v2)
	//fmt.Println(res)

	v1 := new(big.Int)
	v1.SetString("692354345324523453245345",10)
	v2 := new(big.Int)
	v2.SetString("68234523452352353525234523452345",10)
	result := new(big.Int)
	result.Add(v1,v2)
	fmt.Println(result.String())

}
